/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.patpro.controladores;

import com.patpro.modelo.javabeans.AlumnoNota;
import com.patpro.modelo.javabeans.AsignacionAcademica;
import com.patpro.modelo.javabeans.Curso;
import com.patpro.modelo.javabeans.Profesor;
import com.patpro.modelo.javabeans.SemestreAcademico;
import com.patpro.modelo.servicios.AlumnoNotaService;
import com.patpro.modelo.servicios.AlumnoServicio;
import com.patpro.modelo.servicios.CursoService;
import com.patpro.modelo.servicios.ProfesorServicio;
import com.patpro.modelo.servicios.SemestreAcademicoService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

/** 
 
 */
public class AdminAlumnoCursoController extends SimpleFormController {

    private AlumnoNotaService servicio_alumnonota;
    private SemestreAcademicoService servicio_semestre;
    private CursoService servicio_curso;
    private ProfesorServicio servicio_profesor;
    private AlumnoServicio servicio_alumno;

    public void setServicio_alumnonota(AlumnoNotaService servicio_alumnonota) {
        this.servicio_alumnonota = servicio_alumnonota;
    }

    public void setServicio_curso(CursoService servicio_curso) {
        this.servicio_curso = servicio_curso;
    }

    public void setServicio_profesor(ProfesorServicio servicio_profesor) {
        this.servicio_profesor = servicio_profesor;
    }

    public void setServicio_semestre(SemestreAcademicoService servicio_semestre) {
        this.servicio_semestre = servicio_semestre;
    }

    public void setServicio_alumno(AlumnoServicio servicio_alumno) {
        this.servicio_alumno = servicio_alumno;
    }

    public AdminAlumnoCursoController() {
        setCommandClass(AlumnoNota.class);
        setCommandName("alumnocursoBean");
    }
    
    @Override
    protected Object formBackingObject(HttpServletRequest request) throws Exception {
        AlumnoNota as = (AlumnoNota) super.formBackingObject(request);
        String id_semestre = request.getParameter("id_semestre");
        String id_curso = request.getParameter("id_curso");
        String id_profesor = request.getParameter("id_profesor");

        as.setSemestre(new SemestreAcademico(Integer.parseInt(id_semestre)));
        as.setCurso(new Curso(Integer.parseInt(id_curso)));
        as.setProfesor(new Profesor(Integer.parseInt(id_profesor)));
        
        return as;
    }

    @Override
    public Map referenceData(HttpServletRequest request) {
        Map modelo = new HashMap();
        String id_semestre = request.getParameter("id_semestre");
        String id_curso = request.getParameter("id_curso");
        String id_profesor = request.getParameter("id_profesor");
        List<AlumnoNota> asignaciones = servicio_alumnonota.listarAlumnoNota(
                new AsignacionAcademica(Integer.parseInt(id_curso), Integer.parseInt(id_semestre), Integer.parseInt(id_profesor)));
        modelo.put("lista_alumnocurso", asignaciones);

        modelo.put("lista_semestres", servicio_semestre.listarSemestres());
        modelo.put("lista_cursos", servicio_curso.listarCursos());
        modelo.put("lista_profesores", servicio_profesor.listarProfesores());
        modelo.put("lista_alumnos", servicio_alumno.listarAlumnos());

        modelo.put("opcion", "Agregar");
        modelo.put("actualiza", true);
        
        return modelo;
    }

    @Override
    protected ModelAndView onSubmit(
            HttpServletRequest request,
            HttpServletResponse response,
            Object command,
            BindException errors) throws Exception {

        AlumnoNota alumnocurso = (AlumnoNota) command;
        ModelAndView mv =  new ModelAndView(getSuccessView());

        int resp = servicio_alumnonota.insertarAlumnoNota(alumnocurso);
        
        if(resp > 0)
            mv = new ModelAndView(getSuccessView());
        else
            mv = new ModelAndView("error");
        mv.addObject("controlador", "adminAlumnoCurso.htm?id_semestre=" +alumnocurso.getSemestre().getId_semestre()+ "&id_curso="+ alumnocurso.getCurso().getId_curso() +"&id_profesor="+alumnocurso.getProfesor().getId_persona());
        return mv;
    }

}